package com.zyf.project.capchain.utils.wx;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Zhou Yifan
 */
@Slf4j
public class WxLoginUtils {

    private WxLoginUtils() {
    }

    /**
     * 请求的网址
     */
    public static final String WX_LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session";

    /**
     * appid
     */
    public static final String WX_LOGIN_APPID = "wxc98acfb63df38325";

    /**
     * 密匙 729da95c3fecd2f1b4e2d4f95d5decc1
     */
    public static final String WX_LOGIN_SECRET = "729da95c3fecd2f1b4e2d4f95d5decc1";

    /**
     * 固定参数
     */
    public static final String WX_LOGIN_GRANT_TYPE = "authorization_code";

    /**
     * 通过code换取微信小程序官网获取的信息
     *
     * @param code 小程序传来的 code
     * @return 包括openid等信息
     */
    public static JSONObject getResultJson(String code) {
        // 配置请求参数
        Map<String, String> params = new HashMap<>(4);
        params.put("appid", WX_LOGIN_APPID);
        params.put("secret", WX_LOGIN_SECRET);
        params.put("js_code", code);
        params.put("grant_type", WX_LOGIN_GRANT_TYPE);

        // 向微信服务器发送请求
        String wxRequestResult = HttpClientUtils.doGet(WX_LOGIN_URL, params);

        log.info("wxRequestResult = " + wxRequestResult);

        return JSON.parseObject(wxRequestResult);
    }

    /**
     * 根据 code 获取 openid
     *
     * @param code 小程序传来的code
     * @return openid
     */
    public static String getOpenid(String code) {
        return getResultJson(code).getString("openid");
    }

}
